
################################################################################
# Procedure de generation de ping
################################################################################
proc proc_envoiPing { } {
		global var_pingFrequence
		global var_noeudId

		procEnvoi [proc_construirePing $var_noeudId [clock clicks -milliseconds]]

		# regarde si les voisins sont encore la
		global var_listeVoisins
		global const_delaiSuppressionVoisin
			
		foreach var_idNoeud [array names var_listeVoisins -regexp  {^[^,]*$}]  {
			# Voisin introuvable
			if { [expr {[clock clicks -milliseconds] - $var_listeVoisins($var_idNoeud,dernierContact)}] > $const_delaiSuppressionVoisin } {
				array unset var_listeVoisins "$var_idNoeud"
				array unset var_listeVoisins "$var_idNoeud,*"
			}
		}	
		# programmation de la prochaine emission
		after $var_pingFrequence proc_envoiPing
}

################################################################################
# Procedure de traitement des ping
################################################################################
proc proc_voisinsTraiterReponsePing { param_messageListe } {
	global var_listeVoisins
	global var_noeudId
	
	array set var_reponsePing $param_messageListe
	# verifie si c'est une r�onse �un de nos ping
	if { $var_reponsePing(destinataireId) == $var_noeudId } {
		set var_listeVoisins($var_reponsePing(emmeteurId)) $var_reponsePing(emmeteurId)
		set var_distance [expr {([clock clicks -milliseconds] - $var_reponsePing(dateEnvoi))/2 }]
		set var_listeVoisins($var_reponsePing(emmeteurId),distance) $var_distance
		set var_listeVoisins($var_reponsePing(emmeteurId),dernierContact) [clock clicks -milliseconds]
	}
}

################################################################################
# Procedure affichant périodiquement la liste des voisins
################################################################################
proc proc_voisinsAfficher { } {

	global const_delaiAffichageListeVoisins
	#affiche la liste des voisins
	proc_afficheListeVoisins
	# programmation du prochain affichage
	after $const_delaiAffichageListeVoisins proc_voisinsAfficher
}


